1. Field of the Invention
The present invention relates in general to user interfaces for computers. More specifically, the present invention relates to managing window behavior in graphical user interfaces.
2. Background Art
The development of the EDVAC computer system of 1948 is often cited as the beginning of the computer era. Since that time, computer systems have evolved into extremely sophisticated devices that may be found in many different settings. Computer systems typically include a combination of hardware (e.g., semiconductors, circuit boards, etc.) and software (e.g., computer programs). As advances in semiconductor processing and computer architecture push the performance of the computer hardware higher, more sophisticated computer software has evolved to take advantage of the higher performance of the hardware, resulting in computer systems today that are much more powerful than just a few years ago.
One of the most important developments in making computers not only more powerful, but easier to use, was the development of sophisticated user interfaces. Early computer systems were programmed with a series of switches or buttons and provided little relevant feedback during the operation of the computer system. This type of interface proved cumbersome and, accordingly, increasingly more functional and interactive interfaces were developed to extend the functionality of computer systems.
One very popular user interface, that ultimately gained widespread adoption on many different computer systems, was the "command line interface." Using a command line interface, the user would interact with the computer system by typing a specific command on a keyboard to instruct the computer regarding the desired operation to be performed. The command line interface was not intuitive, however, and still limited the use of computers to those who had the time and desire to learn a large number of relatively cryptic commands.
Recognizing the growing need for a more user-friendly interface, computer engineers and programmers developed the Graphical User Interface (GUI). A GUI uses visual representations of common items to allow a user to operate a computer system. In most GUI-based systems, various icons, symbols, menus, etc. are manipulated or activated by a computer user via a pointing device (e.g., a mouse, a trackball) which allow the user to give instructions to the computer. The movement of the pointing device is usually translated to the movement of an animated arrow or cursor, displayed on the computer screen. By moving the mouse or other pointing device, the user can position the cursor at various locations on the computer screen. Then, by activating a button on the mouse, the user can invoke various commands and options.
The various graphical elements of a GUI are usually designed to be somewhat consistent and self-explanatory, thereby making it as easy as possible for a typical user to perform common computer system functions. Over a period of several years, many visual components of GUI-based systems have become fairly standardized and most graphical interfaces have specific elements which have become somewhat universal. For example, almost all GUI-based systems employ pull-down menus, button bars, and windows.
The use of windows in a GUI-based system is practically ubiquitous for all modern computer systems. Almost all graphical interfaces display documents and program interface elements in a portion of the screen called a window. Indeed, the use of windows as an interface element has become so popular that it is difficult to imagine a computer program that does not employ some type of windowing environment. In fact, with the advent of multi-tasking and multi-processing computer environments, it is most common to see a computer screen littered with 3, 4, 8, 10 or more overlapping windows open and in use at any given time. With the advent of inexpensive memory and multi-processor based systems, multiple windows may be used to display the process of multiple tasks, all executing simultaneously.
Ostensibly, the adoption of the GUI and the use of GUI elements such as windows effectively increase the ease of use for a computer system and increase the productivity of the users of these computer systems. However, the use of graphical interface elements in general and windows in particular have, in themselves, led to some inefficiencies in the way users interact with a computer system via a GUI. For example, if a user opens more than one or two windows on a computer screen, the later opened windows tend to obscure the earlier opened windows. Often, it is a requirement that multiple windows or portions of the window(s) must be viewed simultaneously. Although there are controls and other navigational devices available to place and size windows, these known methods involve an undesirable amount of repetitive hand, wrist, and arm movements. This process can be very time-consuming, counter-productive, and frustrating for the user. In addition, given the prevalence of repetitive motion disorders such as carpal tunnel syndrome, reduction of unnecessary movement is highly desirable.
Of all possible operations in a typical GUI environment, window moving and sizing are among the most common and user interactive. While many keyboard-based shortcuts are available to invoke certain functions, control of the windows is fairly mouse-dependent. Specifically, in many window-based GUI environments, a user will expend a considerable amount of mechanical effort repeatedly moving the cursor to the title bar of a window in order to reposition the window, then relocate the cursor to a side or corner of the window in order to resize the window, only to return the cursor to the title bar to once again repeat the sequence if the window is not adequately positioned. This iterative process can quickly become non-productive for users working with multiple windows at the same time, not to mention the physical stress and strain associated with these activities.
In addition, a user will frequently want to "cut and paste" between multiple different windows. This task also will typically require an iterative session of window sizing and positioning activities by the user to display the appropriate window(s) in the appropriate locations with the appropriate sizes. While any of these various inefficiencies, are not, taken alone, tremendously significant or overwhelming, taken together, it is obvious that a great deal of time and effort is wasted in what would otherwise be more productive computer-based activity.
Therefore, there exists a need for an improved widowing environment which will allow the user to more efficiently and effectively control and manage the placement and sizing of windows in any graphical interface environment. Specifically, without an improved mechanism for more precisely controlling the size and placement of multiple, overlapping windows in a GUI environment, the interaction between the computer user and the user interface will remain less than optimal.